Conventional multicarrier digital communication is a technique for transmitting and receiving digital signals using a plurality carriers (subchannels) having different frequencies. Each of the subchannels is used to communicate a different portion of the signal. The transmitter divides the signal into a number of components, assigns each component to a specific one of the carriers, encodes each of the carriers according to the component assigned thereto, and transmits each of the carriers. The receiver decodes each received carriers and reconstructs the signal.
The maximum amount of information that can be encoded onto a particular sub-carrier is a function of the signal to noise ratio of the communication channel with respect to that subcarrier. The signal to noise ratio of a communication channel can vary according to frequency so that the maximum amount of information that can be encoded onto one carrier may be different than the maximum amount of information that can be encoded onto another carrier.
Bit loading is a technique for assigning bits to subchannels according to each sub-channel's signal to noise ratio. A bit loading algorithm provides a bit allocation table that indicates the amount of information (in bits) that is to be encoded on each of the carriers. That is, for a multicarrier communication system with J carriers, a bit allocation table B[j] indicates, for each j=1 to J, the amount of information that is to be encoded onto each of the J carriers.
Shaping the transmission to match the channel characteristics is known. For example, a technique known as “water pouring” was introduced by Gallager in 1968 (“Information Theory and Reliable Communication”, page 389) and by Wozencraft in 1965 (“Principles of Communication Engineering”, pp. 285-357). Water pouring involves distributing the energy of the transmission signal according to the channel frequency response curve (a plot of the signal to noise ratio as a function of frequency). The frequency response curve is inverted and the available signal energy (the “water”) is “poured” into the inverted curve so that more of the energy is distributed into those portions of the channel having the highest signal to noise ratio. In a multicarrier system in which the transmission band is divided into numerous subchannels, throughput can be maximized by putting as many bits in each subcarrier as can be supported given the “water pouring” energy and a desired error rate.
Other techniques for allocating bits among carriers of a multicarrier signal are known. U.S. Pat. No. 4,731,816 to Hughes-Hartogs discloses a bit loading scheme where one bit at a time is incrementally added to each subcarrier until a maximum rate is achieved. Subcarriers that require the least amount of additional power to support an additional bit are selected first.
U.S. Pat. No. 5,479,477 to Chow et al. discloses a bit loading scheme that is capable of either maximizing the throughput or maximizing the margin for a particular target data rate. Unlike Hughes-Hartogs, Chow et al. determines the bit loading table one carrier at a time (rather than one bit at a time). In Chow et al., all the carriers are sorted in descending order according to the measured signal to noise ratio. The initial subchannels that are selected are the ones capable of carrying the most bits. Using the Chow et al. scheme to maximize the data rate provides a bit loading table similar to that provided by the Hughes-Hartogs algorithm.
In order for the receiver to correctly interpret the received data, both the transmitter and the receiver must use the same bit loading table. When the bit loading algorithm is performed during the initialization phase of communication, the resulting bit allocation table is communicated between the transmitter and receiver to ensure that both the transmitter and the receiver are using the same bit loading table. However, in the event that the communication channel signal to noise ratio characteristics change during communication, it may be necessary to update/change the bit allocation table to more appropriately match the transmission with the channel characteristics. However, when the bit allocation table is changed, it is necessary to synchronize use of the new table with both the transmitter and the receiver. If the transmitter and the receiver use different bit allocation tables at any time, the communications link will suffer significant errors in those subchannels in which the bit allocation tables do not agree.
In addition, determining a new bit allocation table can be time consuming, especially if the bit loading algorithm is computationally intensive, such as that disclosed by Hughes-Hartogs where the bit allocation table is constructed one bit at a time. If the bit allocation table is to be calculated many times during communication between the transmitter and receiver, then spending a relatively long amount of time recalculating the bit allocation table (and hence not communicating data) is undesirable.
One solution is to simply not change the bit loading table after initialization. However, this may be unacceptable in cases where the communication channel signal to noise ratio changes during data transmission. Accordingly, it is desirable to be able to determine a bit loading table relatively quickly and to be able to synchronize use of the new table by the transmitter and the receiver.